home *** CD-ROM | disk | FTP | other *** search
- /* Read.c */
-
- /* Functions for reading the screen level */
-
-
-
- #include "wand_head.h"
-
-
- extern char *edit_screen;
- extern char lscreen[NOOFROWS][ROWLEN+1];
- extern char screen_name[61];
- extern char *screenpath;
- extern int edit_mode;
-
- char buffer[80];
-
- int rscreen(num, maxmoves)
- int *maxmoves, num;
- {
- int y, numr;
- FILE *fp;
- char name[100];
- char (*row_ptr)[ROWLEN+1] = lscreen;
-
- /* if (!edit_mode) */
- sprintf(name,"%s/screen.%d",screenpath,num);
- /* else {
- if (!edit_screen)
- sprintf(name,"./screen");
- else
- sprintf(name,"%s",edit_screen);
- }
- */
-
- fp = fopen(name,"r");
- if (fp == NULL) {
- sprintf(buffer,"File for screen %d unavailable.",num);
- alert_message(buffer);
- return -1;
- } else {
- for (y = 0; y < NOOFROWS; y++) {
- fgets(*row_ptr,ROWLEN + 2,fp);
- numr = strlen( *row_ptr ) - 1;
- while (numr < ROWLEN) (*row_ptr)[numr++] = ' ';
- row_ptr++;
- }
- fgets(screen_name,61,fp);
- if (fscanf(fp,"%d",maxmoves) != 1)
- *maxmoves=0;
- fclose(fp);
- }
- return (fp == NULL);
- }
-
- int wscreen(num, maxmoves)
- int maxmoves, num;
- {
- int x, y;
- FILE *fp;
- char name[100];
- char (*row_ptr)[ROWLEN+1] = lscreen;
-
- if (!edit_screen)
- sprintf(name,"./screen");
- else
- sprintf(name,"%s",edit_screen);
- fp = fopen(name,"w");
- if (fp == NULL) {
- sprintf(name,"/tmp/screen.%d",getpid());
- fp = fopen(name,"w");
- sprintf(buffer,"Written file is %s",name);
- notify_message(buffer);
- }
- if (fp == NULL) {
- alert_message("File for screen cannot be written.");
- } else {
- for (y = 0; y < NOOFROWS; y++) {
- for(x = 0; x < ROWLEN; x++)
- fputc(row_ptr[y][x],fp);
- fputc('\n',fp);
- }
- if (*screen_name == '\0')
- fputc('#',fp);
- else
- fputs(screen_name,fp);
- fputc('\n',fp);
- if (maxmoves != 0)
- fprintf(fp,"%d\n",maxmoves);
- fclose(fp);
- }
- return (fp == NULL);
- }
-